package br.com.ordemservico.control;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Query;
import javax.swing.JOptionPane;

import br.com.ordemservico.control.conexao.Conexao;
import br.com.ordemservico.model.Cliente;
import br.com.ordemservico.model.OrdemServico;
import br.com.ordemservico.model.Produto;
import br.com.ordemservico.model.Servico;

public class OrdemServicoDao {
	private Conexao con;
	private OrdemServico os;
	private List<Produto> listaProduto;
	
	public OrdemServicoDao() {
		con = new Conexao();
		os = new OrdemServico();
		listaProduto = new ArrayList<>();
	}
	
	
	public void addProduto(Produto p){
		listaProduto.add(p);
	}
	public void removerProduto(Produto p){
		listaProduto.remove(p);
		
	}
	public OrdemServico criar(OrdemServico os){
		
		try{
			con.conectar();
			con.getTransaction().begin();
			con.getEntityManager().persist(os);
			con.getTransaction().commit();
			
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, "Erro ao cadastrar OS");
			e.getStackTrace();
		}finally{
			con.getEntityManager().close();
		}
		
		return os;
		
	}
	public OrdemServico editar(OrdemServico c) {
		
		try{
			con.conectar();
			con.getTransaction().begin();
			con.getEntityManager().merge(c);
			con.getTransaction().commit();
			
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, "Erro ao editar OS");
			e.printStackTrace();
		}finally{
			con.getEntityManager().close();
		}
		
		return c;
	}
	public boolean excluir(OrdemServico c) {
		//Cliente cliente = findId(c.getId_cliente());
		boolean r = true;
		try{
			con.conectar();
			con.getTransaction().begin();
			OrdemServico os = con.getEntityManager().merge(c);
			con.getEntityManager().remove(os);
			con.getTransaction().commit();
			
		}catch(Exception e){
			r = false;
			JOptionPane.showMessageDialog(null, "Erro ao excluir OS");
			e.printStackTrace();
		}finally{
			con.getEntityManager().close();
		}
		
		return r;
		
	}
	public List<OrdemServico> findAll() {
		List<OrdemServico> listaOrdemServico = null;
		try{
			con.conectar();
			con.getTransaction().begin();
			Query query = con.getEntityManager().createNamedQuery("OS.findAll");
			con.getTransaction().commit();
			listaOrdemServico =   query.getResultList();
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, "Erro ao excluir OS \n"+ e.getStackTrace());
		}finally{
			con.getEntityManager().close();
		}
		return listaOrdemServico;
	}
	

}
